使用 JDBC 驱动

  1. 查看先决条件。
  2. 获取 Drill 的 JDBC 驱动。
  3. 放入 JDBC 驱动 jar 文件到 classpath。
  4. 使用一个可用到 URL 到 JDBC 连接字符串中,当你写入到应用代码或是配置 BI 工具时。
  5. 使用 Drill 驱动类名到应用代码或是配置客户端工具。

大多数客户端工具提供一个 UI 用于提供输入连接信息,包含驱动位置,连接 URL,和驱动类名。连接 Drill 的客户端工具可以通过 JDBC,详看使用 JDBC 到 SQuirreL 和配置 Spotfire 服务。

  • Drill 安装
  • 描述安装 Drill JDBC 驱动到 JReport 的四个步骤

Drill JDBC 驱动的 JAR 文件必须存在一个客户端机器中,以至于你能够配置驱动到应用或第三方工具中。获得驱动有以下方式:

  • 拷贝 JAR 文件到 Drill 的安装目录的节点。或者
  • 下载以下 TAR 文件到本地的客户端:apache- drill-1.0.0.tar.gz。解压文件。在 Windows 中,你可能需要使用解压工具,例如 。驱动抽取到以下目录:
    1. <drill-installation_directory>/jars/jdbc-driver/drill-jdbc-all-<version>.jar

使用 JDBC 连接 Drillbit

  1. jdbc:drill:zk=<zk name>[:<port>][,<zk name2>[:<port>]...
  1. <directory>/<cluster ID>;[schema=<storage plugin>]

这里:

  • jdbc 是连接类型。需要。
  • schema 是存储插件的名称,用于配置使用默认的类型。例如:schema=hive。可选。
  • zk name 指定一个或多个 ZooKeeper 的主机名,或是 IP 地址。使用 local 代替主机名或 IP 地址去连接本地的 Drillbit。需要。
  • port 是 ZooKeeper 的端口号。端口 2181 是默认的。在 MapR 集群上,默认是 5181.可选。
  • directory 是 Drill 在 ZooKeeper 中的目录,它默认在 /drill。可选。
  • 默认是 drillbits1。如果默认被修改,确定集群 ID,并使用它。可选。

确认集群 ID,需检查以下文件:

  1. ...
  2. drill.exec: {
  3. zk.connect: "centos23.lab:5181,centos28.lab:5181,centos29.lab:5181"
  4. }
  5. ...

使用例子

单节点安装

  1. jdbc:drill:zk=maprdemo:5181
  1. jdbc:drill:zk=centos23.lab:2181/drill/docs41cluster-drillbits

集群安装

  1. jdbc:drill:zk=10.10.100.30:5181,10.10.100.31:5181,10.10.100.32:2181/drill/drillbits1;schema=hive

如果你想直接连接 Drillbit 替代用 ZooKeeper 去选择 Drillbit,替换 zk=<zk name> 为 ,格式如下所示:

  1. jdbc:drill:drillbit=<node name>[:<port>][,<node name2>[:<port>]...
  2. <directory>/<cluster ID>[schema=<storage plugin>]

这里:drillbit=<node name> 指定正在运行的 Drill 集群上的一个或更多主机名或是 IP 地址

以下简单的代码展示去使用类名和 Drill-Jdbc-all 驱动去连接 Drill:

  1. Class.forName("org.apache.drill.jdbc.Driver");
  2. Connection connection =DriverManager.getConnection("jdbc:drill:zk=
  3. node3.mynode.com:2181/drill/my_cluster_com-drillbits");
  4. Statement st = connection.createStatement();
  5. ResultSet rs = st.executeQuery("SELECT * from cp.`employee`");
  6. while(rs.next()){
  7. System.out.println(rs.getString(1));